49 #define _flash_sector_size (long)4*1024 //4K
50 #define _page_size_144_200 (long)_flash_sector_size*2 //8k
51 #define _page_size_270 (long)_flash_sector_size*3 //12k
52 #define _image_page_max 16 //16 pages
53 #define _flash_line_size 64
57 #define _image_page_mark ((uint8_t)(_image_page_max-1))
60 #define _image_header_mark_offset _flash_line_size-2
66 #define _image144_size 13 //8K=2^13, for bit shift
67 #define _image144_SOF (long)0x0000 //start address of flash of 1.44"
68 #define _image144_address(x) _image144_SOF+((long)x<<_image144_size)
71 #define _image144_mark_image_page_max 4
72 #define _image144_mark_image_SOF (long)(_image144_SOF+(_image_page_max*_page_size_144_200))
73 #define _image144_mark_image_address(x) _image144_mark_image_SOF+((long)x<<_image144_size)
76 #define _image144_slideshow_page_max 4
77 #define _image144_slideshow_SOF (long)_image144_mark_image_SOF+ \
78 (_image144_mark_image_page_max*_page_size_144_200)
79 #define _image144_slideshow_address(x) _image144_slideshow_SOF+((long)x<<_image144_size)
82 #define _image144_custom_page_max 8
83 #define _image144_custom_SOF (long)_image144_slideshow_SOF+ \
84 (_image144_slideshow_page_max*_page_size_144_200)
85 #define _image144_custom_address(x) _image144_custom_SOF+((long)x<<_image144_size)
91 #define _image200_size 13 //8K=2^13, for bit shift
92 #define _image200_SOF (long)_image144_custom_SOF+ \
93 (_image144_custom_page_max*_page_size_144_200)
94 #define _image200_address(x) _image200_SOF+((long)x<<_image200_size)
97 #define _image200_mark_image_page_max 4
98 #define _image200_mark_image_SOF (long)_image200_SOF+(_image_page_max*_page_size_144_200)
99 #define _image200_mark_image_address(x) _image200_mark_image_SOF+((long)x<<_image200_size)
102 #define _image200_slideshow_page_max 4
103 #define _image200_slideshow_SOF (long)_image200_mark_image_SOF+ \
104 (_image200_mark_image_page_max*_page_size_144_200)
105 #define _image200_slideshow_address(x) _image200_slideshow_SOF+((long)x<<_image200_size)
108 #define _image200_custom_page_max 8
109 #define _image200_custom_SOF (long)_image200_slideshow_SOF+ \
110 (_image200_slideshow_page_max*_page_size_144_200)
111 #define _image200_custom_address(x) _image200_custom_SOF+((long)x<<_image200_size)
117 #define _image270_SOF (long)_image200_custom_SOF+ \
118 (_image200_custom_page_max*_page_size_144_200)
119 #define _image270_address(x) _image270_SOF + (((long)x<<13)+((long)x<<12)) //(8*1024) + (4*1024) = 2^13 + 2^12
122 #define _image270_mark_image_page_max 4
123 #define _image270_mark_image_SOF (long)_image270_SOF+(_image_page_max*_page_size_270)
124 #define _image270_mark_image_address(x) _image270_mark_image_SOF +(((long)x<<13)+((long)x<<12))
127 #define _image270_slideshow_page_max 4
128 #define _image270_slideshow_SOF (long)_image270_mark_image_SOF+ \
129 (_image270_mark_image_page_max*_page_size_270)
130 #define _image270_slideshow_address(x) _image270_slideshow_SOF +(((long)x<<13)+((long)x<<12))
133 #define _image270_custom_page_max 8
134 #define _image270_custom_SOF (long)_image270_slideshow_SOF+ \
135 (_image270_slideshow_page_max*_page_size_270)
136 #define _image270_custom_address(x) _image270_custom_SOF +(((long)x<<13)+((long)x<<12))
139 #define _parameters_address 0xFF000
140 #define _parameters_address_max 0xFFFF0
143 #define _image_state_in_use 0xAF
144 #define _image_state_is_empty 0xFF
145 #define _NULL_address -1
147 #define __ASCII_OFFSET 0x20
148 #define __TEXT_Width 8
149 #define __TEXT_High 8
162 #define ElectronicID 0x13
165 #define FLASH_CMD_RDID 0x9F //RDID (Read Identification)
166 #define FLASH_CMD_RES 0xAB //RES (Read Electronic ID)
167 #define FLASH_CMD_REMS 0x90 //REMS (Read Electronic & Device ID)
170 #define FLASH_CMD_WRSR 0x01 //WRSR (Write Status Register)
171 #define FLASH_CMD_RDSR 0x05 //RDSR (Read Status Register)
174 #define FLASH_CMD_READ 0x03 //READ (1 x I/O)
175 #define FLASH_CMD_FASTREAD 0x0B //FAST READ (Fast read data)
178 #define FLASH_CMD_WREN 0x06 //WREN (Write Enable)
179 #define FLASH_CMD_WRDI 0x04 //WRDI (Write Disable)
180 #define FLASH_CMD_PP 0x02 //PP (page program)
183 #define FLASH_CMD_SE 0x20 //SE (Sector Erase)
184 #define FLASH_CMD_BE 0xD8 //BE (Block Erase)
185 #define FLASH_CMD_CE 0x60 //CE (Chip Erase) hex code: 60 or C7
188 #define FLASH_CMD_DP 0xB9 //DP (Deep Power Down)
189 #define FLASH_CMD_RDP 0xAB //RDP (Release form Deep Power Down)
192 #define FLASH_WIP_MASK 0x01
193 #define FLASH_LDSO_MASK 0x02
194 #define FLASH_QE_MASK 0x40
200 void CMD_SE(
long flash_address );
205 void Flash_init(
void);
206 void read_flash(
long Address,uint8_t *target_address, uint8_t byte_length);
207 void write_flash(
long Address,uint8_t *source_address, uint8_t byte_length);
216 void write_ascii(
long CanvasAddress,
long MarkAddress,uint16_t LocationX,uint16_t LocationY,
char *Text);